package com.tao.helloword;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.MessageProperties;
import org.junit.Test;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

/**
 * @ClassName Send
 * @Author HETAO
 * @Date 2020/5/4 17:56
 */
public class Send {
    @Test
    public void testSendMessage() throws IOException, TimeoutException, InterruptedException {
        //1.创建mq的连接工厂对象
        ConnectionFactory connectionFactory = new ConnectionFactory();
        //2.设置连接rabbitmq的主机
        connectionFactory.setHost("yun.888808888.top");
        //3.设置端口号
        connectionFactory.setPort(5672);
        //4.设置连接哪个虚拟主机
        connectionFactory.setVirtualHost("/ems");
        //5.设置访问虚拟主机的账号密码
        connectionFactory.setUsername("hetao");
        connectionFactory.setPassword("jwdlh123");

        //通过连接工厂获取连接对象
        Connection connection = connectionFactory.newConnection();
        //创建通道
        Channel channel = connection.createChannel();
        /**
         *  通道绑定对应消息队列
         *  参数1:队列名称,如果队列不存在自动创建
         *  参数2:用来定义队列特性是否要持久化, true 持久化 false 不持久化
         *  参数3:是否独占队列, true代表独占队列  false不独占
         *  参数4:autoDelete 是否在消费完成后自动删除队列,ture自动删除  false 不自动删除
         *  参数5:额外附加参数
         */
        channel.queueDeclare("hello", true, false, false, null);
        /**
         *发送消息
         * 参数1:交换机名称
         * 参数2:队列名称
         * 参数3:传递消息额外设置  MessageProperties.PERSISTENT_TEXT_PLAIN 设置消息持久化
         * 参数4:消息具体内容
         */
        channel.basicPublish("", "hello", MessageProperties.PERSISTENT_TEXT_PLAIN, "hello rabbitmq".getBytes());

        channel.close();
        connection.close();
    }

}
